<!-- 
3 7  4 1 2 5 

success  <rejected>: Error: error!!!

then:success1   

1 2

once success 1000 success 1000

 then:new Erroe('error!!!')

 死循环

 1
 
 失败fail2:error
 -->
<script>
// 1.
  const first = () =>
    new Promise((resolve, reject) => {
      console.log(3);

      let p = new Promise((resolve, reject) => {
        console.log(7);
        setTimeout(() => {
          console.log(5);
          resolve(6);
        }, 0);
        resolve(1);
      });

      resolve(2);

      p.then((arg) => {
        console.log(arg);//1
      });
    });

  first().then((arg) => {
    console.log(arg);//2
  });
  
  console.log(4);


// 2.
//   const promise1 = new Promise((resolve, reject) => {
//     setTimeout(() => {
//       resolve("success");
//     }, 1000);
//   });
//   const promise2 = promise1.then(() => {
//     throw new Error("error!!!");
//   });
//   console.log("promise1", promise1);
//   console.log("promise2", promise2);

//   setTimeout(() => {
//     console.log("promise1", promise1);
//     console.log("promise2", promise2);
//   }, 2000);


// 3.

// const promise=new Promise((resolve,reject)=>{
//   resolve('success1')
//   reject('error')
//   resolve('success2')
// })

// promise.then((res)=>{
//     console.log('then:',res);
// })
// .catch((err)=>{
//     console.log('catch:',err);
// })

// 4
// Promise.resolve(1)
// .then((res)=>{
//     console.log(res);
//     return 2
// })
// .catch((err)=>{
//     return 3
// })
// .then((res)=>{
//     console.log(res);
// })

// 5
// const promise=new Promise((resolve,reject)=>{
//     setTimeout(()=>{
//         console.log('once');
//         resolve('success')
//     },1000)
// })
// const start=Date.now()
// promise.then((res)=>{
//     console.log(res,Date.now()-start);
// })
// promise.then((res)=>{
//     console.log(res,Date.now()-start);
// })


// 6
// Promise.resolve()
// .then(()=>{
//     return new Error('error!!!')
// })
// .then((res)=>{
//  console.log('then:',res);
// })
// .catch((err)=>{
//     console.log('catch:',err);
// })

// 7
// const promise=Promise.resolve()
// .then(()=>{
//     return promise
// })

// 8
// Promise.resolve(1)
// .then(2)
// .then(Promise.resolve(3))
// .then(console.log)


// 9
// Promise.resolve()
// .then(function success(res){
//     throw new Error('error')
// },function fail(e){
//     console.error('fail:',e);
// })
// .catch(function fail2(e){
//     console.error('fail2:',e);
// })


</script>
